home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / cdplayer / cd_src / cdplay.c < prev    next >
Text File  |  1994-11-16  |  2KB  |  95 lines

  1. #include <stdio.h>
  2. #include <snd.h>
  3. #include <stdlib.h>
  4. #include <cdrfrb.h>
  5. #include <fmcfrb.h>
  6. #include "cd_sub.h"
  7.  
  8. /* プロトタイプ宣言 */
  9. void error(int ret);
  10. int key_in();
  11. void disp_stat(int no, struct TIMEADRS *time1, struct TIMEADRS *time2);
  12.  
  13. /* グローバル変数宣言 */
  14. struct TIMEADRS dsktime;
  15. struct TIMEADRS trktime[99];
  16.  
  17. int type,strack,etrack;
  18. int ptrack;
  19.  
  20. /* メイン関数 */
  21. void main()
  22. {
  23.     int ret;
  24.  
  25.     VDB_init();
  26.     VDB_setcusmd(1);
  27.     SND_elevol_init();
  28.     SND_elevol_set(1,127,127);
  29.     SND_elevol_mute(0x0030);
  30.     cd_stop();
  31.  
  32.     ret = cd_info(&type, &strack, &etrack, trktime, &dsktime);
  33.     if(ret !=0) {
  34.         error(ret);
  35.         exit(1);
  36.     }
  37.     printf("Start track =%d\n",strack);
  38.     printf("End track   =%d\n",etrack);
  39.     printf("%2d:%2d:%2d", dsktime.min, dsktime.sec, dsktime.frame);
  40.     while (1) {
  41.         ret = key_in();
  42.     }
  43. }
  44. int key_in()
  45. {
  46.     static int sw = 1, no, stat;
  47.     static unsigned int code, encode;
  48.     static struct TIMEADRS rdsktime;
  49.     static struct TIMEADRS rdtime;
  50.     int ret;
  51.  
  52.     cd_stat(&stat, &no, &rdtime, &rdsktime);
  53.     disp_stat(no, &rdtime, &rdsktime);
  54.  
  55.     code = KYB_read(sw, &encode);
  56.     switch(code) {
  57.     case 'p':
  58.     case 'P':
  59.         if(type == 1) ret = cd_play(strack+1, &dsktime, trktime);
  60.         else ret = cd_play(strack+1, &dsktime, trktime);
  61.         if(ret != 0) error(ret);
  62.         break;
  63.     case 'n':
  64.     case 'N':
  65.         if(no != etrack) cd_play(no+1, &dsktime, trktime);
  66.         break;
  67.     case 'b':
  68.     case 'B':
  69.         if((type == 1 && no > 1) || (type != 1 && no > 2)) {
  70.             cd_play(no-1, &dsktime, trktime);
  71.         }
  72.         break; 
  73.     case 's':
  74.     case 'S':
  75.         cd_stop();
  76.         break;
  77.     case 'e':
  78.     case 'E':
  79.         VDB_setcusmd(0);
  80.         exit(0);
  81.     }
  82.     return(0);
  83. }
  84. void disp_stat(int no, struct TIMEADRS *time1, struct TIMEADRS *time2)
  85. {
  86.     VDB_setposcus(10, 4);
  87.     printf("%2d        %2d:%2d:%2d",no ,time1->min, time1->sec, time1->frame);
  88.     VDB_setposcus(10, 5);
  89.     printf("        %2d:%2d:%2d",time2->min, time2->sec, time2->frame);
  90. }
  91. void error(int ret)
  92. {
  93.     printf("error!! no=%x",ret);
  94. }
  95.